package com.dsg.kf.front.util;

import java.io.File;
import java.io.IOException;
import java.util.Map;

import org.apache.commons.io.output.FileWriterWithEncoding;
import org.apache.commons.lang3.StringUtils;

import freemarker.template.Configuration;
import freemarker.template.Template;
import freemarker.template.TemplateException;

/**
 * freemarker工具类
 * @author pacy.pan
 *
 */
public class FreemakUtil {

	/**
	 * 生成静态html
	 * @param map
	 * @param templatePath
	 * @param templateFileName
	 * @param htmFullPath
	 * @return
	 */
	public static boolean createHtml(Map<String, Object> map,String templatePath,String templateFileName,String htmFullPath){
		if(map==null || StringUtils.isBlank(templatePath) 
				|| StringUtils.isBlank(templateFileName) || StringUtils.isBlank(htmFullPath)) {
			return false;
		}
		try {
			@SuppressWarnings("deprecation")
			Configuration configuration = new Configuration();
			configuration.setDirectoryForTemplateLoading(new File(templatePath));
			configuration.setDefaultEncoding("UTF-8");
			// 获取或创建一个模版。
			Template template = configuration.getTemplate(templateFileName);
			// 获取html静态页面文件
			// 设置文件输入流编码，不然生成的html文件会中文乱码
			FileWriterWithEncoding out = new FileWriterWithEncoding(htmFullPath, "UTF-8");
			// 将map中的数据输入到index.ftl这个模板文件中并遍历出来，最后再将整个模板的数据写入到index.html中。
			template.process(map, out);
			try {
				Thread.sleep(300);
			} catch (InterruptedException e) {
				e.printStackTrace();
				return false;
			}
			out.flush();
			out.close();
		} catch (TemplateException e) {
			e.printStackTrace();
			return false;
		} catch (IOException e) {
			e.printStackTrace();
			return false;
		}
		return true;
	}
}
